Standard enterprise applications cannot cover all possible customer environments, industries, practices, and requirements. Some application platforms, such as SAP NetWeaver provided by SAP AG from Walldorf Germany offer a platform for building and deploying customer or scenario specific applications that is based on a standard offering. Usually, the customer applications are copied or they reuse parts from the common business applications provided by a given software provider. Therefore, when a provider's application has been changed due to bug fixing or embedding of new functionality, the customer application has to be changed as well. Often times, the changed standard provider's application is obtained via a software patch or service package of a product. The patch may be delivered in a number of different ways including being made available as a download from the Internet site of the company offering the given product. Usually, the patch does not contain the new version of the software in its entirety, just the changes that need to be made. The customer applications affected by these changes have to be adjusted and updated. Ascertaining which parts of the standard application have been changed and which are applicable to which application is a complex task. It is not desirable to test every customer application. The provider's application is a program (or a software product in general) that contains a number of modules and features that perform given functionality. The provider's application is offered to all customers. When a customer buys the provider's product and develops additional features or modules inside the product (or modifies existing ones) and customizes it by his or her needs and requirements, the product becomes a customized product; customer applications are such customized products.
Some software lifecycle solutions provide a list of objects that have to be adjusted or tested after an upgrade or import of patches. These solutions usually scan the actual system and compare the usage of a given object against another not yet upgraded system or against a database. Copied programs are detected by comparing source code lines. If the amount of equal lines is higher than a given threshold, the heuristic assumes it is copied.